The dramatic advances being made in computer processing speed and storage capacity have created new opportunities for computer applications. One of these opportunities lies in the area of multimedia presentations, which combine computerized audio, still pictures, video, text, and other media to create dynamic, sensory-rich communication with computer users.
One of the important challenges involved in presenting multimedia information in a cohesive, life-like fashion is synchronization of the numerous components that make up a typical presentation. This synchronization includes two aspects: first, the presentation components must start in synchrony; second, they must progress at the same rate. Moreover, both aspects of synchronization must be adhered to even when the presentation is played after fast-forward or reverse, or is started at a point other than its beginning.
Because the modern computer systems used to play multimedia presentations frequently run multiple tasks, programs, and processes concurrently, and use multiple processors simultaneously, synchronization of processes can become a significant problem. Thus, the audio portion of a presentation, which comprises one process, may proceed faster than the video portion, which comprises a second process, for reasons which cannot be known prior to playing the presentation. For example, if a multimedia presentation which plays the audio and video of a human speaker is interrupted by an extraneous concurrent process, the audio and video can become unsynchronized, resulting in the perception by the observer that the speaker's lip movements and words do not match. Such effects can significantly detract from the overall quality of the presentation.
Various techniques have been devised for dealing with the synchronization problems that arise in multimedia presentation systems. There are three methods which have been user to solve the synchronization problem. The first of these is a barrier method, that is, each media is allowed to proceed at its own pace until a barrier time or "sync-point" is encountered. Each media waits at the sync-point until all other media have arrived. Once all media have reached the sync-point the media are again allowed to proceed at there own pace.
A second approach uses messages or "pulses" to indicate to the component media, the current position, time, or offset in the multimedia presentation. A master process is sends out these pulses at some rate. Each medium is responsible for making adjustment to its rate to try to match the current or anticipated position (time) of the master.
The third approach is to use a common clock which is adjustable by a master process (or processes). Although such methods have been openly discussed, we are unaware of any complete algorithm which includes methods For initiating, and re-initiating, the synchronization and allows for "re-winding" and "fast-forwarding" in the presentation.
While these various approaches all tend to improve the synchronization of multimedia presentations vis-a-vis a Free-running paradigm, they are not without serious drawbacks. For example, the sync-pointing approaches can be dependent on the processor speed or the hardware. This may allow a presentation to work well in some cases but fail to synchronize in other cases or on different hardware. The pulsing approaches require the pulses to be sent out a sufficient rate to allow For synchronization (this rate may vary on the presentation) video For example may require significant pulse, requiring significant system resources. Pulsing also requires that processes quickly identify the reception or a pulse. Unfortunately, pulse may arrive at times which are inconvenient For the receiving process. Other common-clock approaches may not have clear startup or re-start methods. All of the methods described above have some sort of master process, the rate of that process is assumed to be correct. However, even a master process running at a high priority will experience some variance in its rate. This variance make the task of the slave processes even more difficult, not only do they have to adjust for there own variance, they must also adjust to the variance in the master process's execution rate. The master process also becomes a single point of failure. The methods described above all rely on a clock with encoded clock values. These clock values are typically stored in fixed length fields. With out some care, these clock values may be subject to wrapping, just as a regular clock wraps from 12:00 back to 1:00. Also, the methods described above, may not be applicable to the recording of a synchronized presentation.
Thus, there has heretofore existed an unmet need for a system and method of synchronizing multiple processes in a multimedia presentation without the use of an active clock or a resident controlling process.